--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / translator / TranslatorPage.vue
Displaying Raw • Download
meshchatx/src/frontend/components/translator/TranslatorPage.vue 7d7cd7d48701e74ab38cef0db1eca1b0cd23cf87 (7d7cd7d4) Text, 28.80 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 overflow-hidden min-w-0 bg-gradient-to-br from-slate-50 via-slate-100 to-white dark:from-zinc-950 dark:via-zinc-900 dark:to-zinc-900"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto w-full px-4 md:px-8 py-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4 w-full max-w-4xl mx-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"Tb4b4b4>
Text Translation
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-2xl font-semibold text-gray-900 dark:text-white"Tb4b4b4>TranslatorTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-300"Tb4b4b4>
Translate text using LibreTranslate API or local Argos Translate.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3config Tff7b72&& Tff7b72!Te6edf3configTb4b4b4.Te6edf3translator_enabledTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-4 rounded-xl bg-amber-50 dark:bg-amber-900/10 border border-amber-200/50 dark:border-amber-800/30"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 bg-amber-100 dark:bg-amber-900/30 rounded-lg"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"alert-outline"
Te6edf3classTff7b72=Ta5d6ff"size-5 text-amber-600 dark:text-amber-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 text-sm text-amber-800 dark:text-amber-200"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"font-bold mb-1"Tb4b4b4>Translator is DisabledTb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"opacity-90"Tb4b4b4>
The translation service is currently disabled in your settings. You can enable it
under
Tb4b4b4<Tff7b72RouterLink Tb4b4b4:Te6edf3toTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff'settings' Tb4b4b4}Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"font-bold underline"
Tb4b4b4>SettingsTb4b4b4<Tb4b4b4/Tff7b72RouterLink
Tb4b4b4>.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"border-b border-gray-200 dark:border-zinc-700"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex -mb-px"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 text-sm font-semibold border-b-2 transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3translationMode Tff7b72=== Ta5d6ff'argos'
Tff7b72? Ta5d6ff'border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-300'
Tff7b72: Ta5d6ff'border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72= Ta5d6ff'argos'Ta5d6ff"
Tb4b4b4>
Argos Translate
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 text-sm font-semibold border-b-2 transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3translationMode Tff7b72=== Ta5d6ff'libretranslate'
Tff7b72? Ta5d6ff'border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-300'
Tff7b72: Ta5d6ff'border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72= Ta5d6ff'libretranslate'Ta5d6ff"
Tb4b4b4>
LibreTranslate
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72=== Ta5d6ff'libretranslate'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-lg bg-gray-50 dark:bg-zinc-800/50 border border-gray-100 dark:border-zinc-700/50"
Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"glass-label mb-2"Tb4b4b4>LibreTranslate API ServerTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3libretranslateUrlTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"http://localhost:5000"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 mt-1"Tb4b4b4>
Enter the base URL of your LibreTranslate server (e.g., http://localhost:5000)
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid md:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Source LanguageTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3sourceLangTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72=== Ta5d6ff'libretranslate'Ta5d6ff" Te6edf3valueTff7b72=Ta5d6ff"auto"Tb4b4b4>Auto-detectTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3lang Tff7b72in Te6edf3filteredLanguagesTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ffsrc-Tffd700${Te6edf3langTb4b4b4.Te6edf3codeTffd700}Ta5d6ff`Ta5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3langTb4b4b4.Te6edf3codeTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3name Tff7b72}} (Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3code Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Target LanguageTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72select Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3targetLangTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3valueTff7b72=Ta5d6ff""Tb4b4b4>Select target languageTb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tff7b72option Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3lang Tff7b72in Te6edf3filteredLanguagesTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6fftgt-Tffd700${Te6edf3langTb4b4b4.Te6edf3codeTffd700}Ta5d6ff`Ta5d6ff" Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3langTb4b4b4.Te6edf3codeTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3name Tff7b72}} (Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3code Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72optionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72selectTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72=== Ta5d6ff'argos' Tff7b72&& Tff7b72!Te6edf3hasArgosTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-4 rounded-xl bg-amber-50 dark:bg-amber-900/10 border border-amber-200/50 dark:border-amber-800/30"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 bg-amber-100 dark:bg-amber-900/30 rounded-lg"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"information-outline"
Te6edf3classTff7b72=Ta5d6ff"size-5 text-amber-600 dark:text-amber-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 text-sm text-amber-800 dark:text-amber-200"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"font-bold mb-1"Tb4b4b4>Argos Translate not detectedTb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mb-4 opacity-90"Tb4b4b4>
To use local translation, you must install the Argos Translate package using one of
the following methods:
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid sm:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold uppercase tracking-wider opacity-70"
Tb4b4b4>Method 1: pip (venv)Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-amber-600 dark:text-amber-400 hover:scale-110 transition-transform"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyToClipboardTb4b4b4(Ta5d6ff'pip install argostranslate'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-amber-100/50 dark:bg-black/30 p-2 rounded font-mono text-xs break-all"
Tb4b4b4>
pip install argostranslate
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold uppercase tracking-wider opacity-70"
Tb4b4b4>Method 2: pipxTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-amber-600 dark:text-amber-400 hover:scale-110 transition-transform"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyToClipboardTb4b4b4(Ta5d6ff'pipx install argostranslate'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-amber-100/50 dark:bg-black/30 p-2 rounded font-mono text-xs break-all"
Tb4b4b4>
pipx install argostranslate
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mt-4 text-xs opacity-70 italic"Tb4b4b4>
Note: After installation, you may need to restart the application and install
language packages via the Argos Translate CLI.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72=== Ta5d6ff'argos' Tff7b72&& Te6edf3hasArgos Tff7b72&& Tff7b72!Te6edf3hasArgosLanguagesTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-4 rounded-xl bg-blue-50 dark:bg-blue-900/10 border border-blue-200/50 dark:border-blue-800/30"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 bg-blue-100 dark:bg-blue-900/30 rounded-lg"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"information-outline"
Te6edf3classTff7b72=Ta5d6ff"size-5 text-blue-600 dark:text-blue-400"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 text-sm text-blue-800 dark:text-blue-200"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"font-bold mb-1"Tb4b4b4>No language packages detectedTb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mb-4 opacity-90"Tb4b4b4>
Argos Translate is installed but no language packages are available. Install
language packages using the buttons below or the CLI commands:
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold uppercase tracking-wider opacity-70"
Tb4b4b4>Install all languagesTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-blue-600 dark:text-blue-400 hover:scale-110 transition-transform"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyToClipboardTb4b4b4(Ta5d6ff'argospm install translate'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-3 py-1.5 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isInstallingLanguagesTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3installLanguagesTb4b4b4(Ta5d6ff'translate'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isInstallingLanguagesTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"inline-block w-3 h-3 border-2 border-white border-t-transparent rounded-full animate-spin mr-1"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3v-else Te6edf3icon-nameTff7b72=Ta5d6ff"download" Te6edf3classTff7b72=Ta5d6ff"w-3 h-3" Tb4b4b4/Tb4b4b4>
Install All
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-blue-100/50 dark:bg-black/30 p-2 rounded font-mono text-xs break-all flex-1"
Tb4b4b4>
argospm install translate
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold uppercase tracking-wider opacity-70"
Tb4b4b4>Install specific language pair (example: English to German)Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-blue-600 dark:text-blue-400 hover:scale-110 transition-transform"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyToClipboardTb4b4b4(Ta5d6ff'argospm install translate-en_de'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-blue-100/50 dark:bg-black/30 p-2 rounded font-mono text-xs break-all"
Tb4b4b4>
argospm install translate-en_de
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mt-4 text-xs opacity-70 italic"Tb4b4b4>
After installing language packages, click "Refresh Languages" to reload available
languages.
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Text to TranslateTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72textarea
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3inputTextTa5d6ff"
Te6edf3rowsTff7b72=Ta5d6ff"6"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter text to translate..."
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isTranslatingTa5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-4 py-2 text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3canTranslate Tff7b72|| Te6edf3isTranslatingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3translateTextTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isTranslatingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"inline-block w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin mr-2"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3v-else Te6edf3icon-nameTff7b72=Ta5d6ff"translate" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3isTranslating Tff7b72? Ta5d6ff"Translating..." Tff7b72: Ta5d6ff"Translate" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-4 py-2 text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3targetLang Tff7b72|| Te6edf3isTranslatingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3swapLanguagesTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"swap-horizontal" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Swap
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-4 py-2 text-sm" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearTextTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"broom" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Clear
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3translationResultTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold text-gray-900 dark:text-white"Tb4b4b4>TranslationTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"Tb4b4b4>
Source: Tff7b72{{ Te6edf3translationResultTb4b4b4.Te6edf3source Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"p-4 rounded-lg bg-gray-50 dark:bg-zinc-800 border border-gray-200 dark:border-zinc-700"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-white whitespace-pre-wrap"Tb4b4b4>
Tff7b72{{ Te6edf3translationResultTb4b4b4.Te6edf3translated_text Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"Tb4b4b4>
Detected: Tff7b72{{ Te6edf3translationResultTb4b4b4.Te6edf3source_lang Tff7b72}} → Tff7b72{{ Te6edf3translationResultTb4b4b4.Te6edf3target_lang Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3errorTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 rounded-lg bg-red-50 dark:bg-red-900/20 text-red-700 dark:text-red-300"
Tb4b4b4>
Tff7b72{{ Te6edf3error Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold text-gray-900 dark:text-white"Tb4b4b4>Available LanguagesTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 mb-2"Tb4b4b4>
Languages are loaded from LibreTranslate API or Argos Translate packages.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3lang Tff7b72in Te6edf3filteredLanguagesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3langTb4b4b4.Te6edf3codeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-1 rounded text-xs bg-gray-100 dark:bg-zinc-800 text-gray-700 dark:text-gray-300"
Tb4b4b4>
Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3name Tff7b72}} (Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3code Tff7b72}})
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-500 dark:text-gray-500"Tb4b4b4>- Tff7b72{{ Te6edf3langTb4b4b4.Te6edf3source Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2 mt-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-4 py-2 text-sm" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadLanguagesTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"refresh" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Refresh Languages
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3translationMode Tff7b72=== Ta5d6ff'argos' Tff7b72&& Te6edf3hasArgosTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-4 py-2 text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isInstallingLanguagesTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3installLanguagesTb4b4b4(Ta5d6ff'translate'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isInstallingLanguagesTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"inline-block w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin mr-2"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3v-else Te6edf3icon-nameTff7b72=Ta5d6ff"download" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Install All Languages
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"TranslatorPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3languagesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3sourceLangTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3targetLangTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3inputTextTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3translationModeTff7b72: Ta5d6ff"argos"Tb4b4b4,
Te6edf3libretranslateUrlTff7b72: Ta5d6ff"http://localhost:5000"Tb4b4b4,
Te6edf3hasArgosTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isTranslatingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isInstallingLanguagesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3translationResultTff7b72: Tff7b72nullTb4b4b4,
Te6edf3errorTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3canTranslateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3translator_enabled Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3inputTextTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3targetLang Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3targetLang Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3sourceLang
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3useArgosTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"argos"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasArgosLanguagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3languagesTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3langTb4b4b4) Tb4b4b4=> Te6edf3langTb4b4b4.Te6edf3source Tff7b72=== Ta5d6ff"argos"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filteredLanguagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"argos"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3languagesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3langTb4b4b4) Tb4b4b4=> Te6edf3langTb4b4b4.Te6edf3source Tff7b72=== Ta5d6ff"argos"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3languagesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3langTb4b4b4) Tb4b4b4=> Te6edf3langTb4b4b4.Te6edf3source Tff7b72=== Ta5d6ff"libretranslate"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3translationModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"libretranslate" Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3sourceLangTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72= Ta5d6ff"auto"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"argos" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72=== Ta5d6ff"auto"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3loadLanguagesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3libretranslateUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"libretranslate"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadLanguagesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3translator_enabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadLanguagesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadLanguagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3config Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3translator_enabledTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3params Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"libretranslate" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3libretranslateUrlTb4b4b4) Tb4b4b4{
Te6edf3paramsTb4b4b4.Te6edf3libretranslate_url Tff7b72= Tff7b72thisTb4b4b4.Te6edf3libretranslateUrlTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/translator/languages"Tb4b4b4, Tb4b4b4{ Te6edf3params Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3languages Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3languages Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasArgos Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3has_argosTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"translator.failed_load_languages"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3copyToClipboardTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3translateTextTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3canTranslate Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isTranslatingTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3targetLangTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"translator.select_languages_warning"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"argos" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72=== Ta5d6ff"auto"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"translator.auto_detect_not_supported"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isTranslating Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translationResult Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3textTff7b72: Tff7b72thisTb4b4b4.Te6edf3inputTextTb4b4b4,
Te6edf3source_langTff7b72: Tff7b72thisTb4b4b4.Te6edf3sourceLangTb4b4b4,
Te6edf3target_langTff7b72: Tff7b72thisTb4b4b4.Te6edf3targetLangTb4b4b4,
Te6edf3use_argosTff7b72: Tff7b72thisTb4b4b4.Te6edf3useArgosTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"libretranslate" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3libretranslateUrlTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3libretranslate_url Tff7b72= Tff7b72thisTb4b4b4.Te6edf3libretranslateUrlTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/translator/translate"Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translationResult Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationResultTb4b4b4.Te6edf3source_lang Tff7b72=== Ta5d6ff"auto"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72= Tff7b72thisTb4b4b4.Te6edf3translationResultTb4b4b4.Te6edf3source_langTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"translator.failed_translate"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isTranslating Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3swapLanguagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3targetLangTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3translationResult Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3translationResultTb4b4b4.Te6edf3source_lang Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3translationResultTb4b4b4.Te6edf3source_lang Tff7b72!== Ta5d6ff"auto"
Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3temp Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sourceLangTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72= Tff7b72thisTb4b4b4.Te6edf3targetLangTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3targetLang Tff7b72= Te6edf3tempTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationResultTb4b4b4.Te6edf3translated_textTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3inputText Tff7b72= Tff7b72thisTb4b4b4.Te6edf3translationResultTb4b4b4.Te6edf3translated_textTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translationResult Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72const Te6edf3temp Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sourceLangTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translationMode Tff7b72=== Ta5d6ff"argos"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3targetLangTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72= Tff7b72thisTb4b4b4.Te6edf3targetLangTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3targetLang Tff7b72= Te6edf3temp Tff7b72&& Te6edf3temp Tff7b72!== Ta5d6ff"auto" Tff7b72? Te6edf3temp Tff7b72: Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sourceLang Tff7b72= Tff7b72thisTb4b4b4.Te6edf3targetLang Tff7b72|| Ta5d6ff"auto"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3targetLang Tff7b72= Te6edf3temp Tff7b72&& Te6edf3temp Tff7b72!== Ta5d6ff"auto" Tff7b72? Te6edf3temp Tff7b72: Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3clearTextTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3inputText Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translationResult Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3installLanguagesTb4b4b4(Te6edf3packageNameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isInstallingLanguagesTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isInstallingLanguages Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/translator/install-languages"Tb4b4b4, Tb4b4b4{
Tff7b72packageTff7b72: Te6edf3packageNameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Languages installed successfully"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadLanguagesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3error Tff7b72=
Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Failed to install languages. Make sure argospm is available in PATH."Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isInstallingLanguages Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────